<!-- $Id: overview.html 1223 2012-08-27 17:20:17Z queinnec $
     Page de garde des paquetages fr.upmc.ilp.*
-->
<body><p>

Ensemble de paquetages Java associés à quelques autres programmes en
d'autres langages (Makefile, RelaxNG, Scheme) liés à l'unité
d'enseignement « <a href='http://www-master.infop6.jussieu.fr/'>
Implantation d'un Langage de Programmation</a> » dispensé à l'UPMC
(Université Pierre et Marie Curie).

</p><p>

Ces paquetages décrivent des interprètes et des compilateurs pour une
série de langages emboîtés de la classe de JavaScript mais dont la
syntaxe concrète est XML. Le compilateur est écrit en Java
et produit du C. Le but de tous ces différents langages est de
souligner les différents langages impliqués (syntaxe d'entrée, langage
d'entrée, langage de sortie et langage de la bibliothèque d'exécution,
langage dans lequel est écrit le compilateur) ce qui ici est plus
simple qu'un compilateur de Scheme en Scheme comme dans « <a
href='http://lip6.fr/Christian.Queinnec/WWW/LiSP.html'>
Principes d'implantation de Scheme et Lisp</a> » [Queinnec2007].

</p><p>

Le paquetage <tt>ilp1.interfaces</tt> contient les interfaces décrivant des
AST (arbres de syntaxe abstraite). Ces interfaces sont associées à des
grammaires appropriés des schémas RelaxNG permettant de valider les
programmes représentés par des fichiers XML.

</p><p>

Le paquetage <tt>ilp1.fromxml</tt> contient un premier analyseur syntaxique
XML vers AST.

</p><p>

Le paquetage <tt>ilp1.eval</tt> contient un analyseur syntaxique XML vers
EAST amélioré ainsi qu'un interprète.

</p><p>

Le paquetage <tt>ilp1.cgen</tt> contient un analyseur syntaxique XML vers
CEAST et un compilateur vers C. La bibliothèque d'exécution en C se
trouve dans le répertoire C.

</p><p>

Le paquetage <tt>ilp2</tt> étend le langage pour inclure
l'affectation, la boucle tant que et les définitions de fonctions
globales. Il reprend le meilleur des paquetages précédents (afin de ne
plus en dépendre) et définit un interprète et un compilateur vers C.
Ce paquetage contient également une nouvelle bibliothèque d'exécution pour
l'interprète en Java.

</p><p>

Le paquetage <tt>ilp3</tt> étend le langage ILP2 pour inclure le
traitement des exceptions. Il ne fait que complémenter le paquetage
précédent.

</p><p>

Le paquetage <tt>ilp4</tt> modifie le langage ILP3 afin que toute
instruction soit également une expression. Cette modification permet
d'implanter une optimisation: l'intégration (ou <em>inlining</em>).
Le paquetage ne dépend pas du précédent.

</p><p>

Le paquetage <tt>ilp6</tt> étend le langage ILP4 avec des classes et
des objets. Ce paquetage ne dépend pas du précédent.

</p><p>

Ces programmes ont été développés sur Linux avec Emacs, make, jikes,
RelaxNG ainsi qu'Eclipse.

</p></body>
